import { DeptVO } from "@/api/system/dept/types";
import { RoleVO } from "@/api/system/role/types";
import { PostVO } from "@/api/system/post/types";

/**
 * 用户返回对象
 */
export interface UserVO extends BaseEntity {
  // 用户ID
  userId: string | number;
  // 租户ID
  tenantId: string | number;
  // 当前部门ID
  deptId: number;
  // 用户名
  userName: string;
  // 用户昵称
  nickName: string;
  // 用户类型
  userType: string;
  // 邮箱
  email: string;
  // 手机号
  phoneNumber: number;
  // 性别
  sex: string;
  // 头像
  avatar: string;
  // 用户状态
  userStatus: string;
  // 是否删除
  delFlag: string;
  // 登陆IP
  loginIp: string;
  // 登陆时间
  loginDate: string;
  // 最后一次登陆租户ID
  useLastTenantId: string | number;
  // 描述信息
  remark: string;
  // 部门
  dept: DeptVO;
  // 角色
  roles: RoleVO[];
  // 角色IDs
  roleIds: any;
  // 职位ID
  postIds: any;
  // 当前角色ID
  roleId: any;
  // 是否管理员
  admin: boolean;
}

/**
 * 用户信息
 */
export interface UserInfo {
  // 用户信息
  sysUserVo: UserVO;
  // 角色信息
  roles: string[];
  // 权限信息
  permissions: string[];
}

/**
 * 用户查询对象类型
 */
export interface UserQuery extends PageQuery {
  userName?: string;
  phoneNumber?: string;
  userStatus?: string;
  deptId?: string | number;
  roleId?: string | number;
}

/**
 * 用户表单类型
 */
export interface UserForm {
  id?: string;
  userId?: string;
  deptId?: number;
  userName: string;
  nickName?: string;
  password: string;
  phoneNumber?: number;
  email?: string;
  sex?: string;
  userStatus: string;
  remark?: string;
  postIds: string[];
  roleIds: string[];
}

export interface UserInfoVO {
  sysUserVo: UserVO;
  roles: RoleVO[];
  roleIds: string[];
  posts: PostVO[];
  postIds: string[];
  roleGroup: string;
  postGroup: string;
}
